/*
 * @Author: hrg
 * @Date: 2024-01-27 10:40:50
 * @LastEditTime: 2024-01-27 13:59:41
 * @FilePath: \study_go\study08_gin\gin_demo_01\main\main.go
 * @Description:json 数据的解析和绑定
 */

//  客户端传参，后端接收并解析到结构体
package main

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// 首先定义一个用于接收前端参数的结构体
type Login struct {
	User     string `json:"user" binding:"required"`
	Password string `json:"password" binding:"required"`
}

func main() {

	r := gin.New()

	r.POST("/login", test)

	r.Run(":9090")
}

func test(c *gin.Context) {

	var json Login

	// 将json数据绑定到结构体，但是不会设置http状态
	if err := c.ShouldBindJSON(&json); err != nil {
		c.JSON(http.StatusBadRequest, gin.H{
			"err": err.Error(),
		})
		return
	}

	if json.User != "root" && json.Password != "123" {
		c.JSON(http.StatusBadRequest, gin.H{
			"error": "输入的用户名或密码不正确",
		})
		return
	}
	c.JSON(200, gin.H{
		"success": "登录成功！",
	})
}
